#pragma once

#include <string>
#include <memory>

namespace jvm {
namespace heap {

class Class;
class ConstantPool;

class SymRef {
protected:
    std::shared_ptr<ConstantPool> m_pCp;
    std::string m_className;
    std::shared_ptr<Class> m_pClass;

public:
    SymRef(std::shared_ptr<ConstantPool> pCp = nullptr);
    
    std::shared_ptr<Class> resolvedClass();
    void resolveClassRef();
};

} // namespace heap
} // namespace jvm
